@page "/docio/mail-merge-event"
@inject Microsoft.JSInterop.IJSRuntime JS
@using System.IO
@using Syncfusion.Blazor.Buttons
@using BlazorDemos.Data.FileFormats.DocIO
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment hostingEnvironment
@inherits SampleBaseComponent;

<SampleDescription>
    <p style="font-size:16px">This sample demonstrates how to format the Mail merged data using Mail merge events of Essential DocIO.</p>
</SampleDescription>
<ActionDescription>
    <p style="font-size:16px">DocIO provides event support for text and image merge fields. With these events, you can format the text and the image merged in the Word document during mail merge.</p>&nbsp;
                <p><ul style="font-size:16px"><li>Using event support, you can generate report with each record in new page by inserting page break.</li>
                <li>You can perform mail merge for a group of merge fields by defining group start and end fields in the template document.</li></ul></p>
                <p style="font-size:16px">Using event support, you can generate report with each record in new page by inserting page break.</p>&nbsp;
                <p style="font-size:16px">More information about the Mail merge event can be found in this <a href="https://help.syncfusion.com/file-formats/docio/working-with-mailmerge#event-support-for-mail-merge">documentation</a> section.</p>
</ActionDescription>

    <div class="control-section">
        <p style="font-size:16px">Click the button to view the generated Word document. Please note that Microsoft Word Viewer or Microsoft Word is required to view the resultant Word document.</p>

        <table>
            <tr>
                <td>
                    <h5 class="row" style="font-size:16px">Save As:</h5>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="DOC" Name="DOC" Value=@("DOC") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="DOCX" Name="DOCX" Value=@("DOCX") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
                <td>
                    <div class="col-xs-12 col-sm-12 col-lg-1 col-md-6">
                        <SfRadioButton Label="WordML" Name="WordML" Value=@("WordML") @bind-Checked="@documentType"></SfRadioButton>
                    </div>
                </td>
            </tr>
            <tr>
                <td colspan="4">
                    <div class="button-section">
                        <div id="button-control">
                            <div class="row">
                                <div>
                                    <SfButton @onclick="ViewTemplate">View Template</SfButton>&nbsp;
                                    <SfButton @onclick="GenerateDocument">Generate Document</SfButton>
                                </div>
                            </div>
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </div>

<style>
    .control-section .row {
        margin: 10px 0;
    }
</style>

@code {
    MemoryStream documentStream;
    string documentType = "DOCX";

    /// <summary>
    /// Create and download the simple Word document
    /// </summary>
    public async Task GenerateDocument(MouseEventArgs args)
    {
        MailMergeEventService service = new MailMergeEventService(hostingEnvironment);
        documentStream = service.MailMergeEvent(documentType, "Generate Document");
        if (documentStream != null)
        {
            if (documentType == "DOC")
                await JS.SaveAs("Sample.doc", documentStream.ToArray());
            else if (documentType == "WordML")
                await JS.SaveAs("Sample.xml", documentStream.ToArray());
            else
                await JS.SaveAs("Sample.docx", documentStream.ToArray());
        }
    }
    /// <summary>
    /// Create and download the template Word document
    /// </summary>
    public async Task ViewTemplate(MouseEventArgs args)
    {
        MailMergeEventService service = new MailMergeEventService(hostingEnvironment);
        documentStream = service.MailMergeEvent(documentType, "View Template");
        await JS.SaveAs("MailMergeEventTemplate.doc", documentStream.ToArray());
    }
}